package q791_customSortString;

import java.util.Arrays;
import java.util.Comparator;

public class Solution_1 {
    /*
    自定义字符串排序
    需要排序的方法 ——> nlogn
    构建一个26个字符的二维数组，第一列代表每个字符（因为会涉及到排序因此会导致混乱）
    第二列代表在order中的顺序，第三列则是s中出现的频次
    然后使用Arrays排序后依次加入到sb中即可
     */
    public String customSortString(String order, String s) {
        int[][] sortArray = new int[26][3];
        for (int i = 0; i < 26; i++) sortArray[i][0] = i;
        for (int i = 1; i <= order.length(); i++) sortArray[order.charAt(i - 1) - 'a'][1] = i;
        for (int i = 0; i < s.length(); i++) sortArray[s.charAt(i) - 'a'][2]++;

        Arrays.sort(sortArray, Comparator.comparingInt(a -> a[1]));
        StringBuilder sb = new StringBuilder();
        for (int[] arr : sortArray) {
            for (int i = 0; i < arr[2]; i++) {
                sb.append((char)(arr[0] + 'a'));
            }
        }
        return sb.toString();
    }
}
